package com.hjqjl.whdemo.base;

import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.blankj.utilcode.util.LogUtils;
import com.hjqjl.whdemo.R;
import com.hjqjl.whdemo.app.SPManager;
import com.hjqjl.whdemo.net.RxManager;
import com.hjqjl.whdemo.utils.ActivityUtils;
import com.hjqjl.whdemo.utils.ScreenUtils;

/**
 * 所有activity都继承BaseActivity
 */
public abstract class BaseActivity extends AppCompatActivity {
    protected String className;
    protected BaseActivity pActivity;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
//        overridePendingTransition(0, 0);//进入activity的动画，可防止闪屏
        className = getClass().getSimpleName();
        LogUtils.v("CurrentClassName ===>" + getClass().getSimpleName());// 打印出当前activity的名字
        pActivity = this;

        ActivityUtils.getInstance().addActivity(this);//添加Activity到容器中
        initBlackWhite();
        initData();
        initListener();
        processLogic();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityUtils.getInstance().removeActivity(this);//从容器中删除Activity
        RxManager.getInstance().clear(pActivity);
        LogUtils.e(className + ":onDestroy");
    }

    @Override
    public void finish() {
        super.finish();
//        overridePendingTransition(0, 0);】
    }

    /**
     * 设置标题名字
     */
    public void setTitle(String title) {
        setTitle(title, true);
    }

    /**
     * 设置标题名字
     */
    public void setTitle(String title, boolean isVisibleBack) {
        TextView tv_toolbar_title = findViewById(R.id.tv_toolbar_title);
        if (tv_toolbar_title != null) {
            tv_toolbar_title.setText(title);
            ivTitleBack(isVisibleBack);//设置标题的时候把返回按钮初始化
        }
    }

    /**
     * 实现标题返回的点击事件---:此点击事件可自定义
     */
    private void ivTitleBack(boolean isVisibleBack) {
        ImageView iv_toolbar_back = findViewById(R.id.iv_toolbar_back);
        if (iv_toolbar_back != null) {
            if (isVisibleBack) {
                iv_toolbar_back.setVisibility(View.VISIBLE);
                iv_toolbar_back.setOnClickListener(v -> backListener());
            } else {
                iv_toolbar_back.setVisibility(View.GONE);
            }
        }
    }

    /**
     * Title返回按钮点击事件（如需要setResult()时，在子类重写此方法，覆盖）
     */
    public void backListener() {
        finish();
    }


    /**
     * 初始化黑白屏
     */
    private void initBlackWhite() {
        boolean isBlackWhite = SPManager.hasBlackWhite();
        if (isBlackWhite) {
            ScreenUtils.setBlackWhite(this, 0);
        } else {
            ScreenUtils.setBlackWhite(this, 1);//需要重启app才可恢复彩色
        }
    }

    /**
     * 初始化数据
     */
    protected void initData() {
    }

    /**
     * 初始化数据
     */
    protected void initListener() {
    }

    /**
     * 逻辑处理
     */
    protected void processLogic() {
    }

}